// pages/report/report.ts
import request from '../../utils/request'
import {base64Encode} from '../../utils/base64'
const app = getApp<IAppOption>()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        globalData: {},
        visitNo: '',

        showCheckBox: false,// 是否显示患者下拉选择框
        patientInfo: {},// 选中的患者信息
        patientList: [],// 患者列表

        reportType: 1,// 报告类型

        showPrintCheckbox: false,// 显示多患者打印下拉选项
        selectData: [],// 选中要打印报告的患者
        maxPrintNum: 3,// 最多打印患者数量

    },

    // 打开/关闭患者选项框
    openCheckBox(){
        this.setData({ showCheckBox: !this.data.showCheckBox });
    },
    // 选中患者
    haldCheckPatient(e: any){
        let patientinfo = e.currentTarget.dataset.patientinfo
        let type = this.data.reportType;
        this.setData({ 
            reportType: 0,// 设置为0为了刷新报告区组件
            patientInfo: patientinfo,
            showCheckBox: false,
        });
        this.setData({
            reportType: type
        });
    },
    // 患者列表
    getPatientList() {
        request.get('/applet/patient/data', { dataType: app.globalData.dataType }).then((res: any) => {

            if(res.data.code === 200) {
                let arr = res.data.data
                this.setData({
                    reportType: 0,
                    patientList: arr
                });
            
                if (arr && arr.length > 0) {
                    // 取从上个页面传递的患者
                    let info = arr.find(obj => {
                        return obj.visitNo == this.data.visitNo
                    })
                    
                    if(! info) {
                        // 取第一个患者
                        info = this.data.patientList[0]
                    }
                    
                    this.setData({
                        reportType: 1,
                        patientInfo: info
                    });
                }
                this.setData({
                    reportType: 1
                });
            } else {
                wx.showToast({
                    title: res.data.msg,
                    icon: 'error',
                    duration: 2000
                })
            }

        })
    },

    changeReport(e: any){
        this.setData({
            reportType: 0// 设置为0为了刷新报告区组件
        });
        
        this.setData({
            reportType: e.currentTarget.dataset.type
        });
        
    },

    /** 打印 相关方法开始 */
    openPrintCheckbox(){
        this.setData({ showPrintCheckbox: !this.data.showPrintCheckbox });
    },
    checkboxChange(e: any) {
        const values = e.detail.value
        if(values.length > this.data.maxPrintNum) {
            wx.showToast({
                title: '多患者打印不能超过三个患者！',
                icon: 'none'
            });
        }
        this.setData({
            selectData: values
        })
    },
    handleToPrint(e: any) {
        if(app.globalData.userInfo.nickName){
            let arr = [];
            if(this.data.selectData && this.data.selectData.length > 0) {
                arr = this.data.selectData;
            } else if (this.data.patientInfo && this.data.patientInfo.visitNo) {
                if(! this.data.patientInfo.diagnosis) {
                    wx.showToast({
                    title: '该患者没有填写入院诊断，无法打印报告！',
                    icon: 'none',
                    });
                    return ;
                } else {
                    arr.push(this.data.patientInfo.visitNo);
                }
            }

            if(arr.length < 1) {
                wx.showToast({
                    title: '无患者可打印！',
                    icon: 'error'
                });
            } else if(arr.length > this.data.maxPrintNum) {
                wx.showToast({
                    title: '患者须三个以内',
                    icon: 'error'
                });
            } else {
                this.setData({ 
                    showCheckBox: false, 
                    showPrintCheckbox: false,
                    selectData: [],
                });
                // wx.navigateTo({
                //     url: "/pages/report/print/index?visitNos=" + arr.join(",")
                // })
                let params = "r="+Math.random()+"&id="+arr.join(",")+"&time="+Date.now()+"&access_token="+app.globalData.access_token;
                let encode = base64Encode(params);
                let url = app.globalData.webViewUrl+"/#/applet_print?ps=" + encode;
                wx.setClipboardData({
                    data: url,
                    success (res) {
                        wx.showToast({
                            title: '报告文件网址已生成，请到Safari浏览器或谷歌浏览器粘贴访问！',
                            icon: 'none',
                            duration: 5000,
                        });
                    }
                })
            }
        } else {
            wx.navigateTo({
                url: '/pages/login/login'
            })
        }
    },
    /** 打印 相关方法结束 */
    
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(e: any) {
        this.setData({
            visitNo: e.visitNo
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        this.setData({
            globalData: app.globalData
        })

        this.getPatientList()
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})